class Solution:
    def longestPalindrome(self, s: str) -> str:
        if not s:
            return ""

        start = 0  # 最长回文子串的起始位置
        max_len = 0  # 最长回文子串的长度

        for i in range(len(s)):
            # 以单个字符为中心的回文（奇数长度）
            len1 = self.expandAroundCenter(s, i, i)
            # 以两个字符为中心的回文（偶数长度）
            len2 = self.expandAroundCenter(s, i, i + 1)

            # 当前最大回文长度
            current_max = max(len1, len2)

            # 更新最长回文子串的信息
            if current_max > max_len:
                max_len = current_max
                # 计算起始位置（注意偶数长度的中心偏移）
                start = i - (max_len - 1) // 2

        return s[start: start + max_len]

    def expandAroundCenter(self, s: str, left: int, right: int) -> int:
        while left >= 0 and right < len(s) and s[left] == s[right]:
            left -= 1
            right += 1
        # 返回回文的长度（注意循环结束时left和right已超出回文边界）
        return right - left - 1
solution=Solution()
s = "babad"
print(solution.longestPalindrome(s))